{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 476 entries, 0 to 475\n",
      "Data columns (total 6 columns):\n",
      "_id       476 non-null object\n",
      "author    476 non-null object\n",
      "star      476 non-null object\n",
      "text      476 non-null object\n",
      "time      476 non-null object\n",
      "votes     476 non-null object\n",
      "dtypes: object(6)\n",
      "memory usage: 22.4+ KB\n"
     ]
    }
   ],
   "source": [
    "from pymongo import MongoClient\n",
    "import pandas as pd\n",
    "\n",
    "client = MongoClient()\n",
    "collection = client['text']['dbcomments']\n",
    "data = list(collection.find())\n",
    "df = pd.DataFrame(data)\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>_id</th>\n",
       "      <th>author</th>\n",
       "      <th>star</th>\n",
       "      <th>text</th>\n",
       "      <th>time</th>\n",
       "      <th>votes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5d972d729f60af0884a86bc7</td>\n",
       "      <td>凌睿</td>\n",
       "      <td>allstar50 rating</td>\n",
       "      <td>[或是被第三者插足，或是不受父母待见，或是被辞退，或是父母根本不想把Ta生下来……这群被抛弃...</td>\n",
       "      <td>2018-08-02 10:33:17</td>\n",
       "      <td>9908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5d972d759f60af0884a86bc8</td>\n",
       "      <td>西楼尘</td>\n",
       "      <td>allstar40 rating</td>\n",
       "      <td>[最费力的成长留在树上的只有壳，最狰狞的伤口留在皮肤的只有疤。最动人的烟火绽在空中看不到，最...</td>\n",
       "      <td>2018-07-02 17:32:29</td>\n",
       "      <td>21559</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5d972d759f60af0884a86bc9</td>\n",
       "      <td>咯咯精</td>\n",
       "      <td>allstar40 rating</td>\n",
       "      <td>[如果说爱你，还打你，那一定是说谎；如果爱你，就会像安藤樱一样紧紧抱住你。（沉溺于安藤樱的美...</td>\n",
       "      <td>2018-05-14 19:31:33</td>\n",
       "      <td>4813</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5d972d759f60af0884a86bca</td>\n",
       "      <td>姨妈的鸭</td>\n",
       "      <td>allstar40 rating</td>\n",
       "      <td>[比起放下手机，这本电影在观影时需要观众做的第一步是：放下三观。]</td>\n",
       "      <td>2018-06-23 12:34:42</td>\n",
       "      <td>4642</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5d972d759f60af0884a86bcb</td>\n",
       "      <td>九只苍蝇撞墙</td>\n",
       "      <td>allstar50 rating</td>\n",
       "      <td>[那些说是枝一直致敬小津的人可以歇歇了。这次他拍了部让小津最深恶痛绝的今村昌平式的蛆虫电影。...</td>\n",
       "      <td>2018-06-11 21:22:12</td>\n",
       "      <td>4818</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        _id  author              star  \\\n",
       "0  5d972d729f60af0884a86bc7      凌睿  allstar50 rating   \n",
       "1  5d972d759f60af0884a86bc8     西楼尘  allstar40 rating   \n",
       "2  5d972d759f60af0884a86bc9     咯咯精  allstar40 rating   \n",
       "3  5d972d759f60af0884a86bca    姨妈的鸭  allstar40 rating   \n",
       "4  5d972d759f60af0884a86bcb  九只苍蝇撞墙  allstar50 rating   \n",
       "\n",
       "                                                text                 time  \\\n",
       "0  [或是被第三者插足，或是不受父母待见，或是被辞退，或是父母根本不想把Ta生下来……这群被抛弃...  2018-08-02 10:33:17   \n",
       "1  [最费力的成长留在树上的只有壳，最狰狞的伤口留在皮肤的只有疤。最动人的烟火绽在空中看不到，最...  2018-07-02 17:32:29   \n",
       "2  [如果说爱你，还打你，那一定是说谎；如果爱你，就会像安藤樱一样紧紧抱住你。（沉溺于安藤樱的美...  2018-05-14 19:31:33   \n",
       "3                  [比起放下手机，这本电影在观影时需要观众做的第一步是：放下三观。]  2018-06-23 12:34:42   \n",
       "4  [那些说是枝一直致敬小津的人可以歇歇了。这次他拍了部让小津最深恶痛绝的今村昌平式的蛆虫电影。...  2018-06-11 21:22:12   \n",
       "\n",
       "   votes  \n",
       "0   9908  \n",
       "1  21559  \n",
       "2   4813  \n",
       "3   4642  \n",
       "4   4818  "
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "475"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 一共包含475条不重复数据\n",
    "len(df['time'].unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "allstar40 rating    196\n",
      "allstar50 rating    193\n",
      "allstar30 rating     51\n",
      "allstar20 rating     14\n",
      "comment-time         14\n",
      "allstar10 rating      8\n",
      "Name: star, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# 查看各个评分所占百分比\n",
    "print(df['star'].value_counts())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4星    196\n",
      "5星    193\n",
      "3星     51\n",
      "无      14\n",
      "2星     14\n",
      "1星      8\n",
      "Name: star, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# 将star转换为星\n",
    "def switch_star(x):\n",
    "    if x == 'allstar10 rating':\n",
    "        x = '1星'\n",
    "    elif x == 'allstar20 rating':\n",
    "        x = '2星'\n",
    "    elif x == 'allstar30 rating':\n",
    "        x = '3星'\n",
    "    elif x == 'allstar40 rating':\n",
    "        x = '4星'\n",
    "    elif x == 'allstar50 rating':\n",
    "        x = '5星'\n",
    "    else:\n",
    "        x = '无'\n",
    "    return x\n",
    "df['star'] = df['star'].apply(switch_star) \n",
    "print(df['star'].value_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts': '/nbextensions/echarts/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "    <div id=\"63a1d7d1c66649d49cb7611f3786d71f\" style=\"width:800px;height:400px;\"></div>\n",
       "\n",
       "\n",
       "<script>\n",
       "    require(['echarts'], function(echarts) {\n",
       "        \n",
       "var myChart_63a1d7d1c66649d49cb7611f3786d71f = echarts.init(document.getElementById('63a1d7d1c66649d49cb7611f3786d71f'), 'light', {renderer: 'canvas'});\n",
       "\n",
       "var option_63a1d7d1c66649d49cb7611f3786d71f = {\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"left\": \"auto\",\n",
       "            \"top\": \"auto\",\n",
       "            \"textStyle\": {\n",
       "                \"fontSize\": 18\n",
       "            },\n",
       "            \"subtextStyle\": {\n",
       "                \"fontSize\": 12\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"toolbox\": {\n",
       "        \"show\": true,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"left\": \"95%\",\n",
       "        \"top\": \"center\",\n",
       "        \"feature\": {\n",
       "            \"saveAsImage\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u4e0b\\u8f7d\\u56fe\\u7247\"\n",
       "            },\n",
       "            \"restore\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"dataView\": {\n",
       "                \"show\": true\n",
       "            }\n",
       "        }\n",
       "    },\n",
       "    \"series_id\": 6757347,\n",
       "    \"tooltip\": {\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"backgroundColor\": \"rgba(50,50,50,0.7)\",\n",
       "        \"borderColor\": \"#333\",\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"pie\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"4\\u661f\",\n",
       "                    \"value\": 196\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"5\\u661f\",\n",
       "                    \"value\": 193\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"3\\u661f\",\n",
       "                    \"value\": 51\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u65e0\",\n",
       "                    \"value\": 14\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"2\\u661f\",\n",
       "                    \"value\": 14\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"1\\u661f\",\n",
       "                    \"value\": 8\n",
       "                }\n",
       "            ],\n",
       "            \"radius\": [\n",
       "                \"0%\",\n",
       "                \"75%\"\n",
       "            ],\n",
       "            \"center\": [\n",
       "                \"50%\",\n",
       "                \"50%\"\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"normal\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"outside\",\n",
       "                    \"textStyle\": {\n",
       "                        \"fontSize\": 12\n",
       "                    },\n",
       "                    \"formatter\": \"{b}: {d}%\"\n",
       "                },\n",
       "                \"emphasis\": {\n",
       "                    \"show\": true,\n",
       "                    \"textStyle\": {\n",
       "                        \"fontSize\": 12\n",
       "                    },\n",
       "                    \"formatter\": \"{b}: {d}%\"\n",
       "                }\n",
       "            },\n",
       "            \"seriesId\": 6757347\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"4\\u661f\",\n",
       "                \"5\\u661f\",\n",
       "                \"3\\u661f\",\n",
       "                \"\\u65e0\",\n",
       "                \"2\\u661f\",\n",
       "                \"1\\u661f\"\n",
       "            ],\n",
       "            \"selectedMode\": \"multiple\",\n",
       "            \"show\": true,\n",
       "            \"left\": \"left\",\n",
       "            \"top\": \"top\",\n",
       "            \"orient\": \"vertical\",\n",
       "            \"textStyle\": {\n",
       "                \"fontSize\": 12\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"animation\": true,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\",\n",
       "        \"#f6f5ec\"\n",
       "    ]\n",
       "};\n",
       "myChart_63a1d7d1c66649d49cb7611f3786d71f.setOption(option_63a1d7d1c66649d49cb7611f3786d71f);\n",
       "\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<pyecharts.charts.pie.Pie at 0x1ab1507be48>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 绘制成图\n",
    "from pyecharts import Pie\n",
    "\n",
    "pie = Pie()\n",
    "index = df['star'].value_counts().index.tolist()\n",
    "values = df['star'].value_counts().values.tolist()\n",
    "pie.add('',index,values,is_label_show=True,legend_orient=\"vertical\",legend_pos='left')\n",
    "pie"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将评论内容写入文本\n",
    "import jieba\n",
    "with open(r'doubancomments.txt','ab') as f:\n",
    "    for comment in df['text']:\n",
    "        comment = ''.join(comment).strip()\n",
    "        f.write(comment.encode('utf-8'))\n",
    "        f.write(b'\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 分词\n",
    "import jieba\n",
    "import collections\n",
    "comments = open(r'doubancomments.txt','r',encoding='utf-8').read()\n",
    "words = jieba.lcut(comments)\n",
    "result = collections.Counter(words)\n",
    "word_counts = dict(result)\n",
    "excludes = [',','的','。','是','\\n','了','和','在','“','、','”','也','人','都','有','不',' ','与','但','？',\n",
    "            '没有','一个','《','》','就','看','，','我','对','被','这','最','他','又','你','上','却','中',\n",
    "            '让','很','说','到','把','而','（','）','着','更','…','就是','啊','还是','什么','不是','地','这个',\n",
    "            '：','；','会','用',\n",
    "           ]\n",
    "for word in excludes:\n",
    "    del word_counts[word]\n",
    "items = list(word_counts.items())\n",
    "items.sort(key=lambda x:x[1],reverse=True)\n",
    "data30 = items[:30]\n",
    "data_index = list(zip(*data30))[0]\n",
    "data_value = list(zip(*data30))[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts': '/nbextensions/echarts/echarts.min', 'wordcloud': '/nbextensions/echarts/echarts-wordcloud.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "    <div id=\"6af81b83784f4b3f82cc16dde05cba6b\" style=\"width:800px;height:400px;\"></div>\n",
       "\n",
       "\n",
       "<script>\n",
       "    require(['echarts', 'wordcloud'], function(echarts) {\n",
       "        \n",
       "var myChart_6af81b83784f4b3f82cc16dde05cba6b = echarts.init(document.getElementById('6af81b83784f4b3f82cc16dde05cba6b'), 'light', {renderer: 'canvas'});\n",
       "\n",
       "var option_6af81b83784f4b3f82cc16dde05cba6b = {\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5c0f\\u5077\\u5bb6\\u65cf\",\n",
       "            \"left\": \"auto\",\n",
       "            \"top\": \"auto\",\n",
       "            \"textStyle\": {\n",
       "                \"fontSize\": 18\n",
       "            },\n",
       "            \"subtextStyle\": {\n",
       "                \"fontSize\": 12\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"toolbox\": {\n",
       "        \"show\": true,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"left\": \"95%\",\n",
       "        \"top\": \"center\",\n",
       "        \"feature\": {\n",
       "            \"saveAsImage\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u4e0b\\u8f7d\\u56fe\\u7247\"\n",
       "            },\n",
       "            \"restore\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"dataView\": {\n",
       "                \"show\": true\n",
       "            }\n",
       "        }\n",
       "    },\n",
       "    \"series_id\": 1634394,\n",
       "    \"tooltip\": {\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"backgroundColor\": \"rgba(50,50,50,0.7)\",\n",
       "        \"borderColor\": \"#333\",\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"wordCloud\",\n",
       "            \"shape\": \"circle\",\n",
       "            \"rotationRange\": [\n",
       "                -90,\n",
       "                90\n",
       "            ],\n",
       "            \"rotationStep\": 45,\n",
       "            \"girdSize\": 20,\n",
       "            \"sizeRange\": [\n",
       "                12,\n",
       "                60\n",
       "            ],\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5bb6\\u5ead\",\n",
       "                    \"value\": 184,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(30,29,16)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u679d\\u88d5\",\n",
       "                    \"value\": 178,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(69,60,6)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u7535\\u5f71\",\n",
       "                    \"value\": 147,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(41,143,59)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u793e\\u4f1a\",\n",
       "                    \"value\": 81,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(38,38,49)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u91cc\",\n",
       "                    \"value\": 80,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(144,84,82)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u597d\",\n",
       "                    \"value\": 76,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(144,41,134)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u7231\",\n",
       "                    \"value\": 75,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(41,30,29)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5b89\\u85e4\\u6a31\",\n",
       "                    \"value\": 75,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(153,157,62)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u751f\\u6d3b\",\n",
       "                    \"value\": 71,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(70,98,157)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4ed6\\u4eec\",\n",
       "                    \"value\": 68,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(66,78,140)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u7f81\\u7eca\",\n",
       "                    \"value\": 65,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(134,47,91)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5bb6\\u65cf\",\n",
       "                    \"value\": 60,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(74,20,12)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u80fd\",\n",
       "                    \"value\": 55,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(1,125,93)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u81ea\\u5df1\",\n",
       "                    \"value\": 53,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(61,105,121)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5bfc\\u6f14\",\n",
       "                    \"value\": 52,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(87,13,138)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u53ef\\u4ee5\",\n",
       "                    \"value\": 50,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(13,59,27)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u8840\\u7f18\",\n",
       "                    \"value\": 50,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(77,155,76)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u592a\",\n",
       "                    \"value\": 50,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(34,104,137)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u559c\\u6b22\",\n",
       "                    \"value\": 49,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(106,80,146)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u679d\",\n",
       "                    \"value\": 48,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(98,38,43)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6e29\\u60c5\",\n",
       "                    \"value\": 48,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(60,58,13)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6545\\u4e8b\",\n",
       "                    \"value\": 48,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(159,94,121)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6211\\u4eec\",\n",
       "                    \"value\": 47,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(72,49,108)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u60c5\\u611f\",\n",
       "                    \"value\": 47,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(149,16,121)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5173\\u7cfb\",\n",
       "                    \"value\": 45,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(68,156,37)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u591a\",\n",
       "                    \"value\": 45,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(125,76,158)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e00\\u90e8\",\n",
       "                    \"value\": 44,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(96,147,156)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6700\\u540e\",\n",
       "                    \"value\": 43,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(136,18,135)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u955c\\u5934\",\n",
       "                    \"value\": 42,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(99,133,143)\"\n",
       "                        }\n",
       "                    }\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u8981\",\n",
       "                    \"value\": 42,\n",
       "                    \"textStyle\": {\n",
       "                        \"normal\": {\n",
       "                            \"color\": \"rgb(119,92,138)\"\n",
       "                        }\n",
       "                    }\n",
       "                }\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [],\n",
       "            \"selectedMode\": \"multiple\",\n",
       "            \"show\": true,\n",
       "            \"left\": \"center\",\n",
       "            \"top\": \"top\",\n",
       "            \"orient\": \"horizontal\",\n",
       "            \"textStyle\": {\n",
       "                \"fontSize\": 12\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"animation\": true,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\",\n",
       "        \"#f6f5ec\"\n",
       "    ]\n",
       "};\n",
       "myChart_6af81b83784f4b3f82cc16dde05cba6b.setOption(option_6af81b83784f4b3f82cc16dde05cba6b);\n",
       "\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<pyecharts.charts.wordcloud.WordCloud at 0x1ab1acd9d68>"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 词云展示\n",
    "from pyecharts import WordCloud\n",
    "wordcloud = WordCloud('小偷家族')\n",
    "wordcloud.add('',data_index,data_value,word_szie_range=[60,200])\n",
    "wordcloud"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 情感分析\n",
    "from snownlp import SnowNLP\n",
    "sentiments = []\n",
    "for comment in df['text']:\n",
    "    comment = ''.join(comment)\n",
    "    point = SnowNLP(comment).sentiments\n",
    "    sentiments.append(point)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['sentiments'] = sentiments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6.375784999956835e-08"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df['sentiments']<0.5]['sentiments'].min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "matplotlib.rcParams['font.family']='SimHei'\n",
    "matplotlib.rcParams['font.size']=20\n",
    "#组距\n",
    "d = 0.1\n",
    "#组数\n",
    "num_bins=1/d\n",
    "plt.figure(figsize=(20,8),dpi=100)\n",
    "plt.hist(list(df['sentiments']),bins=10)\n",
    "#plt.xticks(list(np.arange(0,1,0.1)))\n",
    "plt.title('情感评分直方图')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 评分随时间变化关系\n",
    "from datetime import datetime\n",
    "def switch_time(x):\n",
    "    x = datetime.strptime(x,'%Y-%m-%d %H:%M:%S')\n",
    "    return x\n",
    "switch_time(df['time'][0])\n",
    "df['time'] = df['time'].apply(switch_time)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>_id</th>\n",
       "      <th>author</th>\n",
       "      <th>star</th>\n",
       "      <th>text</th>\n",
       "      <th>votes</th>\n",
       "      <th>sentiments</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-05-31</th>\n",
       "      <td>33</td>\n",
       "      <td>33</td>\n",
       "      <td>33</td>\n",
       "      <td>33</td>\n",
       "      <td>33</td>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-06-30</th>\n",
       "      <td>61</td>\n",
       "      <td>61</td>\n",
       "      <td>61</td>\n",
       "      <td>61</td>\n",
       "      <td>61</td>\n",
       "      <td>61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-07-31</th>\n",
       "      <td>33</td>\n",
       "      <td>33</td>\n",
       "      <td>33</td>\n",
       "      <td>33</td>\n",
       "      <td>33</td>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-08-31</th>\n",
       "      <td>326</td>\n",
       "      <td>326</td>\n",
       "      <td>326</td>\n",
       "      <td>326</td>\n",
       "      <td>326</td>\n",
       "      <td>326</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-09-30</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-10-31</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-30</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-31</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-01-31</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-02-28</th>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-03-31</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-04-30</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-31</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            _id  author  star  text  votes  sentiments\n",
       "time                                                  \n",
       "2018-05-31   33      33    33    33     33          33\n",
       "2018-06-30   61      61    61    61     61          61\n",
       "2018-07-31   33      33    33    33     33          33\n",
       "2018-08-31  326     326   326   326    326         326\n",
       "2018-09-30    4       4     4     4      4           4\n",
       "2018-10-31    0       0     0     0      0           0\n",
       "2018-11-30    1       1     1     1      1           1\n",
       "2018-12-31    4       4     4     4      4           4\n",
       "2019-01-31    2       2     2     2      2           2\n",
       "2019-02-28    8       8     8     8      8           8\n",
       "2019-03-31    2       2     2     2      2           2\n",
       "2019-04-30    1       1     1     1      1           1\n",
       "2019-05-31    1       1     1     1      1           1"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#jiangcaiyang\n",
    "df.set_index('time').sort_index().resample('M').count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
